# 九九乘法表的正常左下角写法
'''
 1 * 1 = 1
 1 * 2 = 2   2 * 2 = 4  
 1 * 3 = 3   2 * 3 = 6   3 * 3 = 9
 1 * 4 = 4   2 * 4 = 8   3 * 4 =12   4 * 4 =16
 1 * 5 = 5   2 * 5 =10   3 * 5 =15   4 * 5 =20   5 * 5 =25
 1 * 6 = 6   2 * 6 =12   3 * 6 =18   4 * 6 =24   5 * 6 =30   6 * 6 =36
 1 * 7 = 7   2 * 7 =14   3 * 7 =21   4 * 7 =28   5 * 7 =35   6 * 7 =42   7 * 7 =49  
 1 * 8 = 8   2 * 8 =16   3 * 8 =24   4 * 8 =32   5 * 8 =40   6 * 8 =48   7 * 8 =56   8 * 8 =64
 1 * 9 = 9   2 * 9 =18   3 * 9 =27   4 * 9 =36   5 * 9 =45   6 * 9 =54   7 * 9 =63   8 * 9 =72   9 * 9 =81  
'''
print('正常左下角写法自己的for思路')
for i in range(1,10):  # 把i看做行
    j = 1
    print("{}*{}={}".format(j, i, i * j), end=' ')
    if i == j:
        print('')
    while i > j:
        j+=1
        print("{}*{}={}".format(j, i, i * j), end=' ')
        if i == j:
            print('')
print('=' * 20)

'''
1*1=1
1*2=2    2*2=4    
1*3=3    2*3=6    3*3=9
1*4=4    2*4=8    3*4=12   4*4=16
1*5=5    2*5=10   3*5=15   4*5=20   5*5=25
1*6=6    2*6=12   3*6=18   4*6=24   5*6=30   6*6=36
1*7=7    2*7=14   3*7=21   4*7=28   5*7=35   6*7=42   7*7=49   
1*8=8    2*8=16   3*8=24   4*8=32   5*8=40   6*8=48   7*8=56   8*8=64
1*9=9    2*9=18   3*9=27   4*9=36   5*9=45   6*9=54   7*9=63   8*9=72   9*9=81  
'''
print('正常左下角写法修改的for思路')
for row in range(1, 10):
    for col in range(1, 10):
        if col <= row:
         print("{:^3d}*{:^3d}={:^3d}".format(col, row, row * col), end=' ')
         #	{:^3d} 中间对齐 (宽度为3)
    print('')
print('=' * 20)

# 九九乘法表的左下角写法
print('正常左下角写法学习后修改的for思路')
# 1、把乘法表左上角考虑成（1，1）坐标点，每个乘法表等于row*col
# 2、输出是一行一行输出的，所以每一行输出后要求换行。
# 3、每一行的行号就是列从1到行号的循环。
# 4、对格式进行修正，
for row in range(1, 10):
    for col in range(1, row + 1):
        print("{}*{}={:<4}".format(col, row, row * col), end=' ')
    print('')
print('=' * 20)

print('正常左下角写法的while思路')
row = 1
# 行的初始值为1
while row <= 9:
    col = 1
    # 列的初始值为1
    while col <= row:
        print('{}*{}={:<4d}'.format(col, row, row * col),end='')
        col += 1
    print('')
    row += 1
print('=' * 20)


# 九九乘法表的左上角写法
'''
1*9=9    2*9=18   3*9=27   4*9=36   5*9=45   6*9=54   7*9=63   8*9=72   9*9=81
1*8=8    2*8=16   3*8=24   4*8=32   5*8=40   6*8=48   7*8=56   8*8=64   
1*7=7    2*7=14   3*7=21   4*7=28   5*7=35   6*7=42   7*7=49
1*6=6    2*6=12   3*6=18   4*6=24   5*6=30   6*6=36
1*5=5    2*5=10   3*5=15   4*5=20   5*5=25   
1*4=4    2*4=8    3*4=12   4*4=16
1*3=3    2*3=6    3*3=9
1*2=2    2*2=4
1*1=1 
'''
print('九九乘法表的左上角for写法')
for row in range(9,0,-1):
    for col in range(1,row+1):
        print("{}*{}={:<4}".format(col, row, row * col), end=' ')
    print('')
print('=' * 20)

print('正常左上角写法的while思路')
row = 9
while row >=0:
    col = 1
    n = row
    # 被乘数的初始值为row
    while col <=n:
        print('{}*{}={:<4d}'.format(col, n, n * col),end='')
        n -=1
    print('')
    col += 1
    row -=1
print('=' * 20)

# 九九乘法表的右下角写法
'''
                                                                        1*1=1
                                                               2*1=2    2*2=4
                                                      3*1=3    3*2=6    3*3=9
                                             4*1=4    4*2=8    4*3=12   4*4=16
                                    5*1=5    5*2=10   5*3=15   5*4=20   5*5=25
                           6*1=6    6*2=12   6*3=18   6*4=24   6*5=30   6*6=36
                  7*1=7    7*2=14   7*3=21   7*4=28   7*5=35   7*6=42   7*7=49
         8*1=8    8*2=16   8*3=24   8*4=32   8*5=40   8*6=48   8*7=56   8*8=64
9*1=9    9*2=18   9*3=27   9*4=36   9*5=45   9*6=54   9*7=63   9*8=72   9*9=81
'''
print('九九乘法表的右下角for写法')
for row in range(1, 10):
    for n in range(1, 10 - row):
    # 先打印对应的空格
    # 每一行的空格分别是8，7，6，5，4，3，2，1，0
        print(' ' * 9 , end='')
    for col in range(1, row + 1):
    # 然后再将每行的乘法表正常输出
        print("{}*{}={:<4}".format(row, col, row * col), end=' ')
    print('')
print('=' * 20)

print('正常右下角写法的while思路')
row = 1
# 行的初始值为1
# 列的初始值为1
while row <= 9:
    n = 9-row
    while n > 0:
        print(' ' * 9, end='')
        n -= 1
    col = row
    while col >0:
        print('{}*{}={:<5}'.format(col, row, row * col), end='')
        col -= 1
    print('')
    row += 1
print('=' * 20)


# 九九乘法表的右上角写法
'''
9*9=81   9*8=72   9*7=63   9*6=54   9*5=45   9*4=36   9*3=27   9*2=18   9*1=9
         8*8=64   8*7=56   8*6=48   8*5=40   8*4=32   8*3=24   8*2=16   8*1=8
                  7*7=49   7*6=42   7*5=35   7*4=28   7*3=21   7*2=14   7*1=7
                           6*6=36   6*5=30   6*4=24   6*3=18   6*2=12   6*1=6
                                    5*5=25   5*4=20   5*3=15   5*2=10   5*1=5
                                             4*4=16   4*3=12   4*2=8    4*1=4
                                                      3*3=9    3*2=6    3*1=3
                                                               2*2=4    2*1=2
                                                                        1*1=1
'''
print('九九乘法表的右上角for写法')
for row in range(9, 0, -1):
    for n in range(9, 0, -1):
    # 即每一行的需要空位数分别是：0，1，2，3，4，5，6，7，8
    # n的取值分别为9，8，7，6，5，4，3，2，1
        if n > row:
            print(' ' * 9 , end='')
    for col in range(row, 0, -1):
    # 开始的列的值取决于行的初试数值
        print("{}*{}={:<4}".format(row, col, row * col), end=' ')
    print('')
print('=' * 20)


print('正常右上角写法的while思路')
row = 9
while row >= 1:
    col = row
    n = 0
    while n < 9 - row:
        print(' ' * 9, end='')
        n += 1
    while col >=1:
        print('{}*{}={:<5d}'.format(row, col, row * col),end='')
        col -= 1
    print('')
    row -= 1

    